using System;
using ns27;

namespace Triton.Game.Mapping
{
	[Attribute38("RitualSpellController")]
	public class RitualSpellController : SpellController
	{
		public Spell m_ritualSpell => method_3<Spell>("m_ritualSpell");

		public float m_noSpellDisplayTime => method_2<float>("m_noSpellDisplayTime");

		public string m_friendlyRitualBoneName => method_4("m_friendlyRitualBoneName");

		public string m_opponentRitualBoneName => method_4("m_opponentRitualBoneName");

		public bool m_hideRitualActor => method_2<bool>("m_hideRitualActor");

		public Spell m_tauntInstantSpell => method_3<Spell>("m_tauntInstantSpell");

		public Spell m_tauntInstantPremiumSpell => method_3<Spell>("m_tauntInstantPremiumSpell");

		public bool m_skipIfCthunInPlay => method_2<bool>("m_skipIfCthunInPlay");

		public bool m_showBonusAnims => method_2<bool>("m_showBonusAnims");

		public float m_prebuffDisplayTime => method_2<float>("m_prebuffDisplayTime");

		public Entity m_ritualEntity => method_3<Entity>("m_ritualEntity");

		public Entity m_ritualEntityClone => method_3<Entity>("m_ritualEntityClone");

		public bool m_finished => method_2<bool>("m_finished");

		public Actor m_ritualActor => method_3<Actor>("m_ritualActor");

		public Spell m_tauntSpellInstance => method_3<Spell>("m_tauntSpellInstance");

		public RitualSpellController(IntPtr address, string className)
			: base(address, className)
		{
		}

		public RitualSpellController(IntPtr address)
			: this(address, "RitualSpellController")
		{
		}

		public new bool AddPowerSourceAndTargets(PowerTaskList taskList)
		{
			return method_11<bool>("AddPowerSourceAndTargets", new object[1] { taskList });
		}

		public new void OnProcessTaskList()
		{
			method_8("OnProcessTaskList");
		}

		public int FindLatestProxyCthunCreationTask()
		{
			return method_11<int>("FindLatestProxyCthunCreationTask", Array.Empty<object>());
		}

		public void OnSpellFinished(Spell spell, object userData)
		{
			method_8("OnSpellFinished", spell, userData);
		}

		public void OnSpellEvent(string eventName, object eventData, object userData)
		{
			method_8("OnSpellEvent", eventName, eventData, userData);
		}

		public void OnRitualSpellStateFinished(Spell spell, SpellStateType prevStateType, object userData)
		{
			method_8("OnRitualSpellStateFinished", spell, prevStateType, userData);
		}

		public void FinishRitual()
		{
			method_8("FinishRitual");
		}

		public Actor LoadRitualActor(Entity entity)
		{
			return method_14<Actor>("LoadRitualActor", new object[1] { entity });
		}

		public void UpdateAndPositionRitualActor()
		{
			method_8("UpdateAndPositionRitualActor");
		}

		public bool IsCthunInPlay(Player player)
		{
			return method_11<bool>("IsCthunInPlay", new object[1] { player });
		}
	}
}
